In the industries such as the automotive industry, there is a trend away from ‘Fail Safe’ systems, in which a system is put into a safe (restricted) mode when a fault is detected, towards ‘Fault Tolerant’ systems that enable less restricted operation upon a fault occurring. To minimize application software complexity within electronic control units etc., lockstep cores are typically requested by automotive companies, whereby the same set of operations is run at the same time on multiple processor cores in parallel to provide fault detection during operation.
Power/performance ratio requirements are driving implementations towards the use of multi-threaded cores in order to deliver the required performance increases at acceptable power levels. However, the detection of a fault within one element of a multi-threaded lockstep core will result in a lock step miss-match across all threads running on the lockstep-cores. With conventional lockstep implementations, this will result in fault handling being implemented across all threads running on the lockstep system, for example all threads being stopped. This outcome conflicts with the desired move towards fault tolerant systems that support higher levels of functional availability during fault conditions.